📖 Add ClusterObjectSet documentation#2615
📖 Add ClusterObjectSet documentation#2615openshift-merge-bot[bot] merged 1 commit intooperator-framework:mainfrom
Conversation
✅ Deploy Preview for olmv1 ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
There was a problem hiding this comment.
Pull request overview
Adds initial concept documentation for the ClusterObjectSet API, describing how it enables phased rollouts and how operator-controller uses it for ClusterExtension installs/upgrades.
Changes:
- Introduces a new draft concepts page explaining
ClusterObjectSetpurpose, lifecycle, phases, collision protection, and status conditions. - Documents operator-controller phase ordering, readiness probing behavior, and large-bundle Secret externalization.
- Provides YAML examples (inline objects and Secret references) plus basic
kubectlinspection commands.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #2615 +/- ##
==========================================
- Coverage 68.86% 68.84% -0.03%
==========================================
Files 139 139
Lines 9872 9872
==========================================
- Hits 6798 6796 -2
- Misses 2557 2558 +1
- Partials 517 518 +1
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 1 out of 1 changed files in this pull request and generated 4 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 1 out of 1 changed files in this pull request and generated 4 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Signed-off-by: Per G. da Silva <pegoncal@redhat.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 1 out of 1 changed files in this pull request and generated 4 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| | Order | Phase | Resource Kinds | | ||
| | --- | --- | --- | | ||
| | 1 | `namespaces` | Namespace | | ||
| | 2 | `policies` | NetworkPolicy, PodDisruptionBudget, PriorityClass | |
There was a problem hiding this comment.
The phase-ordering table is written with a double leading pipe (|| ... |), which renders as an extra empty column in standard Markdown. Use a single leading | for the header/separator/rows so the table has exactly the intended 3 columns.
| | Status | Reason | Meaning | | ||
| | --- | --- | --- | | ||
| | True | `RollingOut` | Actively making progress | | ||
| | True | `Retrying` | Encountered a retryable error | |
There was a problem hiding this comment.
The condition tables under "Status conditions" are formatted with a double leading pipe (||), which adds an extra empty column in Markdown. Update these tables to use a single leading | so they render correctly.
|
|
||
| - It is removed from the owner list of all previously managed objects | ||
| - Objects that did not transition to a succeeding revision are deleted | ||
| - The revision cannot be un-archived |
There was a problem hiding this comment.
Minor wording: "The revision cannot be un-archived" is typically written without a hyphen ("unarchived" / "un-archived" -> "unarchived").
| - The revision cannot be un-archived | |
| - The revision cannot be unarchived |
| A `ClusterObjectSet` is a cluster-scoped Kubernetes API that represents a versioned set of Kubernetes resources organized into ordered phases. It provides a declarative way to roll out a group of related resources sequentially, with built-in readiness checks between phases. | ||
|
|
||
| The revision content — the `revision` number, `collisionProtection` strategy, and `phases` (including all objects within them) — is immutable once set. This guarantees that the record of what was deployed at a given revision cannot change after creation. Other fields like `lifecycleState` can change over the object's lifecycle (e.g. transitioning from `Active` to `Archived`), and optional fields like `progressDeadlineMinutes` and `progressionProbes` can be configured independently. |
There was a problem hiding this comment.
The doc says the revision content (including phases) is immutable “once set” and implies it cannot change after creation. In the current API validation, spec.phases can still be set/changed if the existing value is empty (XValidation: self == oldSelf || oldSelf.size() == 0). Consider clarifying this as “write-once after it becomes non-empty” (or documenting the exception) so the behavior matches the API.
camilamacedo86
left a comment
There was a problem hiding this comment.
I am ok with LGTM
@michaelryanpeter WDYT?
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: grokspawn The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
5d89b4e
into
operator-framework:main
Description
Adds initial documentation for the
ClusterObjectSetAPIReviewer Checklist